/*!
 *  \file       test-firstElement.cpp
 *  \brief      Main per testare la prima componente della FFT
 *
 * Questo programma testa se la prima componente è esattamente uguale alla
 * somma delle componenti del segnale di partenza
 *
 *  \author     Davide Scola <S2299453@studenti.unige.it>
 *  \author		Minetti Alberto <S3064777@studenti.unige.it>
 *  \version    1.0
 *
 */

#ifdef HAVE_CONFIG_H
# include "config.h"
#endif

#include <iostream>
#include "ISignalGenerator.hpp"	
#include "StaircaseSignalGenerator.cpp"
#include "InputSignal.cpp"
#include "WrapNumber.cpp"
#include "RealNumber.hpp"
#include "Fft.cpp"


using namespace std;


int
main( int argc, char *argv[] )
{
    int retValue = 0;
    RealNumber sumSignals( 0 );
    Fft< RealNumber > fft( INPUT_SIZE );
    
    StaircaseSignalGenerator< RealNumber > generator( --argc, ++argv );
    InputSignal< RealNumber > input( INPUT_SIZE, generator );
    
    fft.compute( input );
    
    for( unsigned int i = 0; i < input.size(); i++ ) {
        sumSignals += input[i];
    }
    
    if( fft[0] == sumSignals ) {
        cout << sumSignals << endl;
        retValue = 0;
    }
    
    return retValue;
}
